{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 零基础实战机器学习\n",
    "\n",
    "## 第15讲 会员流失情况判断\n",
    "\n",
    "作者 黄佳\n",
    "\n",
    "极客时间专栏链接：https://time.geekbang.org/column/intro/438\n",
    "\n",
    "\n",
    "问题：判断易速鲜花会员的是否会流失情况\n",
    "\n",
    "易速鲜花公司拥有多年的会员记录，以及会员停止续费的情况。\n",
    "\n",
    "通过逻辑回归和神经网络等机器学习模型，我们可以判断出客户是否离开，这是一个典型的的二元分类问题。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据的读入和预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np # 导入NumPy\n",
    "import pandas as pd # 导入Pandas\n",
    "import matplotlib.pyplot as plt # 导入matplotlib.pyplot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>用户码</th>\n",
       "      <th>性别</th>\n",
       "      <th>玫瑰套餐</th>\n",
       "      <th>紫罗兰套餐</th>\n",
       "      <th>郁金香套餐</th>\n",
       "      <th>百合套餐</th>\n",
       "      <th>康乃馨套餐</th>\n",
       "      <th>胡姬花套餐</th>\n",
       "      <th>生日套餐</th>\n",
       "      <th>情人节套餐</th>\n",
       "      <th>会员卡类型</th>\n",
       "      <th>入会月数</th>\n",
       "      <th>会费支付方式</th>\n",
       "      <th>平均月消费</th>\n",
       "      <th>总消费</th>\n",
       "      <th>已停付会费</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>女</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>年卡</td>\n",
       "      <td>9</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>65.60</td>\n",
       "      <td>593.3</td>\n",
       "      <td>否</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>男</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>月卡</td>\n",
       "      <td>9</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>59.90</td>\n",
       "      <td>542.4</td>\n",
       "      <td>否</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>男</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>月卡</td>\n",
       "      <td>4</td>\n",
       "      <td>就餐时付费</td>\n",
       "      <td>73.90</td>\n",
       "      <td>280.85</td>\n",
       "      <td>是</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>男</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>月卡</td>\n",
       "      <td>13</td>\n",
       "      <td>就餐时付费</td>\n",
       "      <td>98.00</td>\n",
       "      <td>1237.85</td>\n",
       "      <td>是</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>女</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>月卡</td>\n",
       "      <td>9</td>\n",
       "      <td>花呗付款</td>\n",
       "      <td>69.40</td>\n",
       "      <td>571.45</td>\n",
       "      <td>否</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7038</th>\n",
       "      <td>7039</td>\n",
       "      <td>女</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>年卡</td>\n",
       "      <td>13</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>55.15</td>\n",
       "      <td>742.9</td>\n",
       "      <td>否</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7039</th>\n",
       "      <td>7040</td>\n",
       "      <td>男</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>月卡</td>\n",
       "      <td>2</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>50.30</td>\n",
       "      <td>92.75</td>\n",
       "      <td>否</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7040</th>\n",
       "      <td>7041</td>\n",
       "      <td>男</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>月卡</td>\n",
       "      <td>22</td>\n",
       "      <td>就餐时付费</td>\n",
       "      <td>85.10</td>\n",
       "      <td>1873.7</td>\n",
       "      <td>是</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7041</th>\n",
       "      <td>7042</td>\n",
       "      <td>男</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>双年卡</td>\n",
       "      <td>67</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>67.85</td>\n",
       "      <td>4627.65</td>\n",
       "      <td>否</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7042</th>\n",
       "      <td>7043</td>\n",
       "      <td>男</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>否</td>\n",
       "      <td>是</td>\n",
       "      <td>是</td>\n",
       "      <td>双年卡</td>\n",
       "      <td>63</td>\n",
       "      <td>就餐时付费</td>\n",
       "      <td>59.00</td>\n",
       "      <td>3707.6</td>\n",
       "      <td>否</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>7043 rows × 16 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       用户码 性别 玫瑰套餐 紫罗兰套餐 郁金香套餐 百合套餐 康乃馨套餐 胡姬花套餐 生日套餐 情人节套餐 会员卡类型  入会月数 会费支付方式  \\\n",
       "0        1  女    是     是     否    是     否     是    是     否    年卡     9   手工转账   \n",
       "1        2  男    否     否     否    否     否     否    否     是    月卡     9   手工转账   \n",
       "2        3  男    否     否     否    否     是     否    否     否    月卡     4  就餐时付费   \n",
       "3        4  男    是     否     否    是     是     否    是     是    月卡    13  就餐时付费   \n",
       "4        5  女    否     是     否    否     否     是    是     是    月卡     9   花呗付款   \n",
       "...    ... ..  ...   ...   ...  ...   ...   ...  ...   ...   ...   ...    ...   \n",
       "7038  7039  女    否     否     是    否     否     是    否     否    年卡    13   手工转账   \n",
       "7039  7040  男    否     否     否    是     否     否    否     否    月卡     2   手工转账   \n",
       "7040  7041  男    是     否     否    否     否     否    否     是    月卡    22  就餐时付费   \n",
       "7041  7042  男    是     是     是    否     是     是    否     是   双年卡    67   手工转账   \n",
       "7042  7043  男    是     是     是    是     是     否    是     是   双年卡    63  就餐时付费   \n",
       "\n",
       "      平均月消费      总消费 已停付会费  \n",
       "0     65.60    593.3     否  \n",
       "1     59.90    542.4     否  \n",
       "2     73.90   280.85     是  \n",
       "3     98.00  1237.85     是  \n",
       "4     69.40   571.45     否  \n",
       "...     ...      ...   ...  \n",
       "7038  55.15    742.9     否  \n",
       "7039  50.30    92.75     否  \n",
       "7040  85.10   1873.7     是  \n",
       "7041  67.85  4627.65     否  \n",
       "7042  59.00   3707.6     否  \n",
       "\n",
       "[7043 rows x 16 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_member = pd.read_csv('易速鲜花会员留存.csv') # 导入数据包\n",
    "df_member #显示数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据清洗"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#把总消费字段转换成数值字段\n",
    "df_member['总消费'] = pd.to_numeric(df_member['总消费'], errors='coerce')\n",
    "df_member['总消费'].fillna(0, inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,8))\n",
    "plt.subplot(2, 2, 1)\n",
    "ax = df_member.groupby('性别').count()['用户码'].plot.pie(autopct='%1.0f%%') #饼图\n",
    "plt.subplot(2, 2, 2)\n",
    "ax = df_member.groupby('会费支付方式').count()['用户码'].plot.pie(autopct='%1.0f%%') #饼图\n",
    "plt.subplot(2, 2, 3)\n",
    "ax = df_member.groupby('会员卡类型').count()['用户码'].plot.pie(autopct='%1.0f%%') #饼图\n",
    "plt.subplot(2, 2, 4)\n",
    "ax = df_member.groupby('已停付会费').count()['用户码'].plot.pie(autopct='%1.0f%%') #饼图\n",
    "plt.show() #显示"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_member['已停付会费'].replace(to_replace='是', value=1, inplace=True) #流失-1\n",
    "df_member['已停付会费'].replace(to_replace='否',  value=0, inplace=True) #未流失-0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_member['性别'].replace(to_replace='女', value=0, inplace=True) #女生-0\n",
    "df_member['性别'].replace(to_replace='男', value=1, inplace=True) #男生-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 字段中'Yes' or 'No'转换成为模型可以读取的数值,（布尔型数据，也是数值数据）\n",
    "binary_features = ['玫瑰套餐', '紫罗兰套餐', '郁金香套餐', '百合套餐', '康乃馨套餐', '胡姬花套餐', \n",
    "                   '生日套餐','情人节套餐']\n",
    "for field in binary_features:\n",
    "    df_member[field] = df_member[field] == '是'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>用户码</th>\n",
       "      <th>性别</th>\n",
       "      <th>玫瑰套餐</th>\n",
       "      <th>紫罗兰套餐</th>\n",
       "      <th>郁金香套餐</th>\n",
       "      <th>百合套餐</th>\n",
       "      <th>康乃馨套餐</th>\n",
       "      <th>胡姬花套餐</th>\n",
       "      <th>生日套餐</th>\n",
       "      <th>情人节套餐</th>\n",
       "      <th>会员卡类型</th>\n",
       "      <th>入会月数</th>\n",
       "      <th>会费支付方式</th>\n",
       "      <th>平均月消费</th>\n",
       "      <th>总消费</th>\n",
       "      <th>已停付会费</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>年卡</td>\n",
       "      <td>9</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>65.60</td>\n",
       "      <td>593.30</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>月卡</td>\n",
       "      <td>9</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>59.90</td>\n",
       "      <td>542.40</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>月卡</td>\n",
       "      <td>4</td>\n",
       "      <td>就餐时付费</td>\n",
       "      <td>73.90</td>\n",
       "      <td>280.85</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>月卡</td>\n",
       "      <td>13</td>\n",
       "      <td>就餐时付费</td>\n",
       "      <td>98.00</td>\n",
       "      <td>1237.85</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>月卡</td>\n",
       "      <td>9</td>\n",
       "      <td>花呗付款</td>\n",
       "      <td>69.40</td>\n",
       "      <td>571.45</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7038</th>\n",
       "      <td>7039</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>年卡</td>\n",
       "      <td>13</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>55.15</td>\n",
       "      <td>742.90</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7039</th>\n",
       "      <td>7040</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>月卡</td>\n",
       "      <td>2</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>50.30</td>\n",
       "      <td>92.75</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7040</th>\n",
       "      <td>7041</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>月卡</td>\n",
       "      <td>22</td>\n",
       "      <td>就餐时付费</td>\n",
       "      <td>85.10</td>\n",
       "      <td>1873.70</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7041</th>\n",
       "      <td>7042</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>双年卡</td>\n",
       "      <td>67</td>\n",
       "      <td>手工转账</td>\n",
       "      <td>67.85</td>\n",
       "      <td>4627.65</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7042</th>\n",
       "      <td>7043</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>双年卡</td>\n",
       "      <td>63</td>\n",
       "      <td>就餐时付费</td>\n",
       "      <td>59.00</td>\n",
       "      <td>3707.60</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>7043 rows × 16 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       用户码  性别   玫瑰套餐  紫罗兰套餐  郁金香套餐   百合套餐  康乃馨套餐  胡姬花套餐   生日套餐  情人节套餐 会员卡类型  \\\n",
       "0        1   0   True   True  False   True  False   True   True  False    年卡   \n",
       "1        2   1  False  False  False  False  False  False  False   True    月卡   \n",
       "2        3   1  False  False  False  False   True  False  False  False    月卡   \n",
       "3        4   1   True  False  False   True   True  False   True   True    月卡   \n",
       "4        5   0  False   True  False  False  False   True   True   True    月卡   \n",
       "...    ...  ..    ...    ...    ...    ...    ...    ...    ...    ...   ...   \n",
       "7038  7039   0  False  False   True  False  False   True  False  False    年卡   \n",
       "7039  7040   1  False  False  False   True  False  False  False  False    月卡   \n",
       "7040  7041   1   True  False  False  False  False  False  False   True    月卡   \n",
       "7041  7042   1   True   True   True  False   True   True  False   True   双年卡   \n",
       "7042  7043   1   True   True   True   True   True  False   True   True   双年卡   \n",
       "\n",
       "      入会月数 会费支付方式  平均月消费      总消费  已停付会费  \n",
       "0        9   手工转账  65.60   593.30      0  \n",
       "1        9   手工转账  59.90   542.40      0  \n",
       "2        4  就餐时付费  73.90   280.85      1  \n",
       "3       13  就餐时付费  98.00  1237.85      1  \n",
       "4        9   花呗付款  69.40   571.45      0  \n",
       "...    ...    ...    ...      ...    ...  \n",
       "7038    13   手工转账  55.15   742.90      0  \n",
       "7039     2   手工转账  50.30    92.75      0  \n",
       "7040    22  就餐时付费  85.10  1873.70      1  \n",
       "7041    67   手工转账  67.85  4627.65      0  \n",
       "7042    63  就餐时付费  59.00  3707.60      0  \n",
       "\n",
       "[7043 rows x 16 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_member"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据整理\n",
    "先做数据整理工作，把每个数据字段都转换为可以处理的字段"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>用户码</th>\n",
       "      <th>性别</th>\n",
       "      <th>玫瑰套餐</th>\n",
       "      <th>紫罗兰套餐</th>\n",
       "      <th>郁金香套餐</th>\n",
       "      <th>百合套餐</th>\n",
       "      <th>康乃馨套餐</th>\n",
       "      <th>胡姬花套餐</th>\n",
       "      <th>生日套餐</th>\n",
       "      <th>情人节套餐</th>\n",
       "      <th>入会月数</th>\n",
       "      <th>平均月消费</th>\n",
       "      <th>总消费</th>\n",
       "      <th>已停付会费</th>\n",
       "      <th>会员卡类型_年卡</th>\n",
       "      <th>会员卡类型_月卡</th>\n",
       "      <th>会费支付方式_微信自动扣款</th>\n",
       "      <th>会费支付方式_手工转账</th>\n",
       "      <th>会费支付方式_花呗付款</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>9</td>\n",
       "      <td>65.60</td>\n",
       "      <td>593.30</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>9</td>\n",
       "      <td>59.90</td>\n",
       "      <td>542.40</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>4</td>\n",
       "      <td>73.90</td>\n",
       "      <td>280.85</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>13</td>\n",
       "      <td>98.00</td>\n",
       "      <td>1237.85</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>9</td>\n",
       "      <td>69.40</td>\n",
       "      <td>571.45</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7038</th>\n",
       "      <td>7039</td>\n",
       "      <td>0</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>13</td>\n",
       "      <td>55.15</td>\n",
       "      <td>742.90</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7039</th>\n",
       "      <td>7040</td>\n",
       "      <td>1</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>2</td>\n",
       "      <td>50.30</td>\n",
       "      <td>92.75</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7040</th>\n",
       "      <td>7041</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>22</td>\n",
       "      <td>85.10</td>\n",
       "      <td>1873.70</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7041</th>\n",
       "      <td>7042</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>67</td>\n",
       "      <td>67.85</td>\n",
       "      <td>4627.65</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7042</th>\n",
       "      <td>7043</td>\n",
       "      <td>1</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>63</td>\n",
       "      <td>59.00</td>\n",
       "      <td>3707.60</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>7043 rows × 19 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       用户码  性别   玫瑰套餐  紫罗兰套餐  郁金香套餐   百合套餐  康乃馨套餐  胡姬花套餐   生日套餐  情人节套餐  入会月数  \\\n",
       "0        1   0   True   True  False   True  False   True   True  False     9   \n",
       "1        2   1  False  False  False  False  False  False  False   True     9   \n",
       "2        3   1  False  False  False  False   True  False  False  False     4   \n",
       "3        4   1   True  False  False   True   True  False   True   True    13   \n",
       "4        5   0  False   True  False  False  False   True   True   True     9   \n",
       "...    ...  ..    ...    ...    ...    ...    ...    ...    ...    ...   ...   \n",
       "7038  7039   0  False  False   True  False  False   True  False  False    13   \n",
       "7039  7040   1  False  False  False   True  False  False  False  False     2   \n",
       "7040  7041   1   True  False  False  False  False  False  False   True    22   \n",
       "7041  7042   1   True   True   True  False   True   True  False   True    67   \n",
       "7042  7043   1   True   True   True   True   True  False   True   True    63   \n",
       "\n",
       "      平均月消费      总消费  已停付会费  会员卡类型_年卡  会员卡类型_月卡  会费支付方式_微信自动扣款  会费支付方式_手工转账  \\\n",
       "0     65.60   593.30      0         1         0              0            1   \n",
       "1     59.90   542.40      0         0         1              0            1   \n",
       "2     73.90   280.85      1         0         1              0            0   \n",
       "3     98.00  1237.85      1         0         1              0            0   \n",
       "4     69.40   571.45      0         0         1              0            0   \n",
       "...     ...      ...    ...       ...       ...            ...          ...   \n",
       "7038  55.15   742.90      0         1         0              0            1   \n",
       "7039  50.30    92.75      0         0         1              0            1   \n",
       "7040  85.10  1873.70      1         0         1              0            0   \n",
       "7041  67.85  4627.65      0         0         0              0            1   \n",
       "7042  59.00  3707.60      0         0         0              0            0   \n",
       "\n",
       "      会费支付方式_花呗付款  \n",
       "0               0  \n",
       "1               0  \n",
       "2               0  \n",
       "3               0  \n",
       "4               1  \n",
       "...           ...  \n",
       "7038            0  \n",
       "7039            0  \n",
       "7040            0  \n",
       "7041            0  \n",
       "7042            0  \n",
       "\n",
       "[7043 rows x 19 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 分类字段哑变量\n",
    "category_features = ['会员卡类型', '会费支付方式']\n",
    "df_member = pd.get_dummies(df_member, drop_first=True, columns=category_features)\n",
    "df_member"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 构建特征集和标签集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df_member.drop(['用户码','已停付会费'], axis = 1) # 构建特征集，用户码字段属于无用特征\n",
    "y = df_member.已停付会费.values # 构建标签集"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 拆分数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split #导入train_test_split模块\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size = 0.2) #拆分数据集"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 选择算法\n",
    "\n",
    "这里我们比较逻辑回归和神经网络两种算法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 逻辑回归模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 导入模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression #导入逻辑回归模型\n",
    "lr = LogisticRegression() # lr,就代表是逻辑回归模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 训练机器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr.fit(X_train,y_train) # fit,就相当于是梯度下降"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 评估分数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SK-learn逻辑回归预测准确率81.48%\n"
     ]
    }
   ],
   "source": [
    "print(\"SK-learn逻辑回归预测准确率{:.2f}%\".format(lr.score(X_test,y_test)*100))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 预测结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "逻辑回归对测试集第一个用户的预测结果 0\n"
     ]
    }
   ],
   "source": [
    "y_pred=lr.predict(X_test)\n",
    "print(\"逻辑回归对测试集第一个用户的预测结果\", y_pred[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 神经网络模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "#!pip install keras\n",
    "#!pip install tensorflow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense (Dense)                (None, 12)                216       \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 24)                312       \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 1)                 25        \n",
      "=================================================================\n",
      "Total params: 553\n",
      "Trainable params: 553\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "import keras # 导入Keras库\n",
    "from keras.models import Sequential # 导入Keras序贯模型\n",
    "from keras.layers import Dense # 导入Keras密集连接层\n",
    "dnn = Sequential() # 创建一个序贯DNN模型\n",
    "dnn.add(Dense(units=12, input_dim=17, activation = 'relu')) # 添加输入层\n",
    "dnn.add(Dense(units=24, activation = 'relu')) # 添加隐层\n",
    "dnn.add(Dense(units=1, activation = 'sigmoid')) # 添加输出层\n",
    "dnn.summary() # 显示网络模型（这个语句不是必须的）\n",
    "# 编译神经网络，指定优化器，损失函数，以及评估标准\n",
    "dnn.compile(optimizer = 'RMSProp', #优化器\n",
    "            loss = 'binary_crossentropy', #损失函数\n",
    "            metrics = ['acc']) #评估标准"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5634, 17)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape #X_train目前的形状"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = np.asarray(X_train).astype(np.float32) # 转换为NumPy张量\n",
    "X_test = np.asarray(X_test).astype(np.float32) # 转换为NumPy张量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('float32')"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.dtype #X_train转换后的类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/30\n",
      "71/71 [==============================] - 1s 3ms/step - loss: 11.5413 - acc: 0.5727 - val_loss: 3.4338 - val_acc: 0.7560\n",
      "Epoch 2/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 2.1439 - acc: 0.6408 - val_loss: 0.8800 - val_acc: 0.6717\n",
      "Epoch 3/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 2.2731 - acc: 0.6554 - val_loss: 0.7427 - val_acc: 0.6681\n",
      "Epoch 4/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 2.1159 - acc: 0.6676 - val_loss: 4.1969 - val_acc: 0.7613\n",
      "Epoch 5/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 2.2573 - acc: 0.6798 - val_loss: 0.7482 - val_acc: 0.7161\n",
      "Epoch 6/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 2.0974 - acc: 0.6858 - val_loss: 1.0754 - val_acc: 0.7613\n",
      "Epoch 7/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 2.0184 - acc: 0.6916 - val_loss: 4.0026 - val_acc: 0.7684\n",
      "Epoch 8/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 2.1611 - acc: 0.6963 - val_loss: 2.7669 - val_acc: 0.3869\n",
      "Epoch 9/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 2.2692 - acc: 0.6960 - val_loss: 2.1436 - val_acc: 0.4144\n",
      "Epoch 10/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.8705 - acc: 0.7060 - val_loss: 4.1345 - val_acc: 0.3372\n",
      "Epoch 11/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 2.0856 - acc: 0.7100 - val_loss: 2.2357 - val_acc: 0.7711\n",
      "Epoch 12/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 2.1755 - acc: 0.7062 - val_loss: 1.0234 - val_acc: 0.7746\n",
      "Epoch 13/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 2.0128 - acc: 0.7116 - val_loss: 1.6013 - val_acc: 0.7755\n",
      "Epoch 14/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.9288 - acc: 0.7056 - val_loss: 1.8686 - val_acc: 0.7808\n",
      "Epoch 15/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.9856 - acc: 0.7027 - val_loss: 1.5950 - val_acc: 0.7817\n",
      "Epoch 16/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.8608 - acc: 0.7144 - val_loss: 2.6026 - val_acc: 0.7693\n",
      "Epoch 17/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.8580 - acc: 0.7111 - val_loss: 3.7231 - val_acc: 0.7711\n",
      "Epoch 18/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.9488 - acc: 0.7162 - val_loss: 0.9186 - val_acc: 0.7720\n",
      "Epoch 19/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 2.0236 - acc: 0.7124 - val_loss: 1.5519 - val_acc: 0.7746\n",
      "Epoch 20/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.8541 - acc: 0.7071 - val_loss: 1.7910 - val_acc: 0.7826\n",
      "Epoch 21/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.8352 - acc: 0.7258 - val_loss: 0.9360 - val_acc: 0.7764\n",
      "Epoch 22/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.7248 - acc: 0.7260 - val_loss: 1.0615 - val_acc: 0.5679\n",
      "Epoch 23/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.8298 - acc: 0.7255 - val_loss: 0.6473 - val_acc: 0.7045\n",
      "Epoch 24/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.7426 - acc: 0.7220 - val_loss: 1.3980 - val_acc: 0.5173\n",
      "Epoch 25/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.8500 - acc: 0.7169 - val_loss: 3.6603 - val_acc: 0.7737\n",
      "Epoch 26/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.8567 - acc: 0.7211 - val_loss: 1.9494 - val_acc: 0.7746\n",
      "Epoch 27/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.7172 - acc: 0.7140 - val_loss: 2.5736 - val_acc: 0.7791\n",
      "Epoch 28/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.7809 - acc: 0.7244 - val_loss: 2.8712 - val_acc: 0.4623\n",
      "Epoch 29/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.6692 - acc: 0.7235 - val_loss: 1.5536 - val_acc: 0.7702\n",
      "Epoch 30/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 1.4925 - acc: 0.7342 - val_loss: 6.2890 - val_acc: 0.3789\n"
     ]
    }
   ],
   "source": [
    "history = dnn.fit(X_train, y_train, # 指定训练集\n",
    "                  epochs=30,        # 指定训练的轮次\n",
    "                  batch_size=64,    # 指定数据批量\n",
    "                  validation_split=0.2) #这里直接从训练集数据中拆分验证集，更方便"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def show_history(history): # 显示训练过程中的学习曲线\n",
    "    loss = history.history['loss']\n",
    "    val_loss = history.history['val_loss']\n",
    "    epochs = range(1, len(loss) + 1)\n",
    "    plt.figure(figsize=(12,4))\n",
    "    plt.subplot(1, 2, 1)\n",
    "    plt.plot(epochs, loss, 'bo', label='Training loss')\n",
    "    plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
    "    plt.title('Training and validation loss')\n",
    "    plt.xlabel('Epochs')\n",
    "    plt.ylabel('Loss')\n",
    "    plt.legend()\n",
    "    acc = history.history['acc']\n",
    "    val_acc = history.history['val_acc']\n",
    "    plt.subplot(1, 2, 2)\n",
    "    plt.plot(epochs, acc, 'bo', label='Training acc')\n",
    "    plt.plot(epochs, val_acc, 'b', label='Validation acc')\n",
    "    plt.title('Training and validation accuracy')\n",
    "    plt.xlabel('Epochs')\n",
    "    plt.ylabel('Accuracy')\n",
    "    plt.legend()\n",
    "    plt.show() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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WUL//v0pKSlhfKAsYbh1SmowBgYNkjzBVVXp3dfnn8OOHSKQAW68UaKoDz0UXz933imiMtbvKZjCQn9GkJs1S026OyUxnAIhfrFZpCuCvHWrnKAmyu7d1cJYBbKiKBnn8MMPZ+nSpfz444/s2LGD9u3bs3r1ai677DLee+89li1bxtq1a133d+eddzJmzBjeeustNgXCdKtXr2bixIm89tprTJo0icLCQsrKyujevTtlZWVcf/31Efu7/PLLmTx5MmVlZdx11117+szPz2f27Nls2bKFNXH804wZM4a//vWvzJo1izfffJNFixbx2muvMWLECD799FM6BGoDh1unpI7BgyV/8IIF6d3PzJmydATyEUfACSeIzWLrVnd9rFwJ//43XHJJfCLCjxHkLVvUXuE1fsuFvG6dlO52e2XEDU656WSiyMFXeTQPsqLkOIl6I5NlwIABjB8/nmOPPRYQ8fnUU0/x1FNPsWnTJrbHcS1w2bJlHHHEETRo0IDu3bsDkJeXx9ixY2nVqhUVFRVxjW3Dhg106tQJgIMPPpjvvvsOYE9ku7i4mF1xhCkWLVpE3759qVevHr169WLx4sWcf/753HDDDQwfPpwTTzwRIOw6JXUMGiTL996Tym7pYuZMsXS0bl29buxYGDAA/vEPuPrq2H3ce68sr702vn37cZJeeblO0PMaP0aQ9947tVcVgstN77tvYn0Ei2uNICuK4gnDhg3j0UcfZdiwYQA88cQTnHrqqTz99NM0bdo0rr46dOjAggULqKioYP78+YBUyHvssce44447qKys3NO2cePGbN26lWgl71u1asXy5cvZtWsXixcvZv/99wdgrwTDYIcccgizZs3CWsunn37KwQcfzPTp07nhhht45ZVXuPPOO9m9e3fYdUrq6NBBhGs6fcjWikB2oscO/fvD0UdLGdtY51br10v+5PPOkzHHg18n6alA9hYnguyXiXqOQE4lTgQ5mYl6zrZ7760CWVEUjzjuuONo1KgRRx999J7H48ePZ8iQIRhj4rIwXHfddXu2zc/PB2DEiBGUlpYyevRoKioq2LFjBwCjR49m8ODBDB06NGJ/EyZM4Nxzz6V///6MGTOG5s2bJ/5Cgbvuuos///nP9O7dm2HDhnHQQQfRuXNnzj//fEpKShg2bBgNGjQIu05JLYMHw/vvS37idLB0qVw+DhXI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\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_history(history) # 调用这个函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "45/45 [==============================] - 0s 997us/step - loss: 6.5827 - acc: 0.3811\n",
      "DNN的测试准确率为 38.11%\n"
     ]
    }
   ],
   "source": [
    "result = dnn.evaluate(X_test, y_test) #评估测试集上的准确率\n",
    "print('DNN的测试准确率为',\"{0:.2f}%\".format(result[1]*100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第一个用户分类结果为: 0\n"
     ]
    }
   ],
   "source": [
    "prediction = dnn.predict(X_test) #预测测试集的图片分类\n",
    "print('第一个用户分类结果为:', np.argmax(prediction[0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 神经网络模型-归一化之后"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# from sklearn.model_selection import train_test_split\n",
    "# X_train, X_test, y_train, y_test = train_test_split(X,y,test_size = 0.2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# X_train = np.asarray(X_train).astype(np.float32)\n",
    "# X_test = np.asarray(X_test).astype(np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import MinMaxScaler #导入归一化缩放器\n",
    "scaler = MinMaxScaler() #创建归一化缩放器\n",
    "X_train = scaler.fit_transform(X_train) #拟合并转换训练集数据\n",
    "X_test = scaler.transform(X_test) #转换测试集数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.5396 - acc: 0.7242 - val_loss: 0.4931 - val_acc: 0.7489\n",
      "Epoch 2/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4807 - acc: 0.7610 - val_loss: 0.4759 - val_acc: 0.7569\n",
      "Epoch 3/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4606 - acc: 0.7706 - val_loss: 0.4695 - val_acc: 0.7533\n",
      "Epoch 4/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4534 - acc: 0.7724 - val_loss: 0.4634 - val_acc: 0.7587\n",
      "Epoch 5/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4492 - acc: 0.7766 - val_loss: 0.4592 - val_acc: 0.7569\n",
      "Epoch 6/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4452 - acc: 0.7828 - val_loss: 0.4612 - val_acc: 0.7631\n",
      "Epoch 7/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4423 - acc: 0.7826 - val_loss: 0.4577 - val_acc: 0.7657\n",
      "Epoch 8/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4398 - acc: 0.7823 - val_loss: 0.4546 - val_acc: 0.7595\n",
      "Epoch 9/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4379 - acc: 0.7859 - val_loss: 0.4578 - val_acc: 0.7649\n",
      "Epoch 10/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4358 - acc: 0.7879 - val_loss: 0.4521 - val_acc: 0.7631\n",
      "Epoch 11/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4341 - acc: 0.7841 - val_loss: 0.4522 - val_acc: 0.7657\n",
      "Epoch 12/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4322 - acc: 0.7883 - val_loss: 0.4551 - val_acc: 0.7613\n",
      "Epoch 13/30\n",
      "71/71 [==============================] - 0s 1ms/step - loss: 0.4310 - acc: 0.7897 - val_loss: 0.4509 - val_acc: 0.7675\n",
      "Epoch 14/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4291 - acc: 0.7905 - val_loss: 0.4569 - val_acc: 0.7587\n",
      "Epoch 15/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4281 - acc: 0.7888 - val_loss: 0.4513 - val_acc: 0.7693\n",
      "Epoch 16/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4267 - acc: 0.7890 - val_loss: 0.4499 - val_acc: 0.7728\n",
      "Epoch 17/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4260 - acc: 0.7903 - val_loss: 0.4490 - val_acc: 0.7720\n",
      "Epoch 18/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4249 - acc: 0.7914 - val_loss: 0.4499 - val_acc: 0.7720\n",
      "Epoch 19/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4238 - acc: 0.7939 - val_loss: 0.4488 - val_acc: 0.7737\n",
      "Epoch 20/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4231 - acc: 0.7943 - val_loss: 0.4481 - val_acc: 0.7720\n",
      "Epoch 21/30\n",
      "71/71 [==============================] - 0s 3ms/step - loss: 0.4223 - acc: 0.7941 - val_loss: 0.4491 - val_acc: 0.7657\n",
      "Epoch 22/30\n",
      "71/71 [==============================] - 0s 3ms/step - loss: 0.4214 - acc: 0.7974 - val_loss: 0.4524 - val_acc: 0.7640\n",
      "Epoch 23/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4210 - acc: 0.7932 - val_loss: 0.4472 - val_acc: 0.7764\n",
      "Epoch 24/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4205 - acc: 0.7945 - val_loss: 0.4500 - val_acc: 0.7755\n",
      "Epoch 25/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4199 - acc: 0.7965 - val_loss: 0.4472 - val_acc: 0.7808\n",
      "Epoch 26/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4192 - acc: 0.7961 - val_loss: 0.4463 - val_acc: 0.7791\n",
      "Epoch 27/30\n",
      "71/71 [==============================] - 0s 2ms/step - loss: 0.4187 - acc: 0.7990 - val_loss: 0.4498 - val_acc: 0.7737\n",
      "Epoch 28/30\n",
      "71/71 [==============================] - 0s 3ms/step - loss: 0.4180 - acc: 0.7957 - val_loss: 0.4490 - val_acc: 0.7728\n",
      "Epoch 29/30\n",
      "71/71 [==============================] - 0s 3ms/step - loss: 0.4179 - acc: 0.7957 - val_loss: 0.4478 - val_acc: 0.7764\n",
      "Epoch 30/30\n",
      "71/71 [==============================] - 0s 3ms/step - loss: 0.4174 - acc: 0.7976 - val_loss: 0.4511 - val_acc: 0.7675\n"
     ]
    },
    {
     "data": {
      "image/png": "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7g8dOpSbb76ZSy+9lEWLFtXq2KTtHnroIW699VbGjBnDLrvU7vP3FltswdixYwEYO3YsW2yxBS+//DIHH3wwo0aN4qmnnmLq1KlZ90nu6D0dhg8fzllnncWIESN+nbZus802Y9y4cQD079+fDz/8MOs+aTwa8sMl1K5MIh/nkK7v50vJtEgjlMvSpn333Zd+/foxePBgFi5cWC8LPnTq1Im99tqLnj17cuihh/Lpp58mPvbcc8/lP//5D926dWPNNdekb9++tG/fnrPOOosuXbqw9tprU1JSknWf5I7e02GPPfbg2GOPZZ999mHVVVfls88+4/LLL+e8885ju+22o3v37rRv3z7rPmk8GrruOGmZRNq1yUkS8yRt6v35qmpkYr7fajObh0hjoBH1S/zlL3/xHXfc0XfZZRcfMGCAv/POO7kOqVr5PJtHQ92WdzaPxi6f39N6nfJTQ87mYZZ9Bg6zpdulOVNHkhl8ajPLT33O5mHx+8LTuXNnLysry3UYIg1m8uTJdOjQIddhSB1ke+3M7A1375yjkBpctmu23tOFQa+TtGsXvcyVlZREzXO5Jk0ipa3MLOqj037MpHGlobprtso8RERERIpYTaUSScsk0qxNTjJoMF8WgFEyLSIiItIA0qoBTjummuqck45ZSLM2OUli3tADMauiZFpERERkOSRNkmtKWnOxGEvSwYVJprNLc6BwksQ8XxblUzItIiIiUkdJE+AkSWvai4skSfLTLpVIaw7pJIl5vizKp2RaRBLZeeedGT9+PACjR4/mgAMOqLZ9z549l9l38sknZ207aNAgplczWuT2229fZt/48eNrXI2uNiov+SyNX2N/T0vDSJoAN3QNcNIkP19KJbJJ2hue60X5lEyLSCL9+/dn9OjRADzzzDP069ev1ue47rrr6vTY2RKPrbfemqOOOqpO5xMBvaclHUkT4IauAU6a5OdLqUQhUzItUoBOOw169kz3dtpp1T9mv379eOaZZ4DoxevXrx8//PADu+66K926dft1eeTqVOzZmzFjBttvvz0777wzU6ZMAeDdd9+lS5cubLvtttx4441899139OjRg/Hjx9OjRw8uu+yyX49//vnnGTp06K/333zzTbbffnu6dOlCaabrpWfPnlxxxRV07dqVPffcs8b4Kpo2bRq9evWia9euXHHFFQC89957dO/enS5dujAs8z9Ntn1Se3pPp/uervy4AGVlZWy//fZsvfXW/Otf/6pyn9RO0gS4oWuAkyb5+VIqUciUTItIIh07dmTq1Kl88cUXLFiwgN/97nd8+umnHH/88Tz33HN89NFHfPnll4nPd9lllzFkyBCeeOIJvv32WwA+/fRTbr31VkaNGsVtt91GixYtGDNmDFtvvTVjxozh7LPPrvJ8J554InfeeSdjxozh8ssv//WczZo1Y9y4cXz//fd89tlnieMbMmQIf/vb3xg7diyPP/44kydPZtSoUey77768/vrrtM38T5ltnxSGxvyervy45ee7++67KSsr4+23365yn9RO0gS4oWuAa9PLnQ+lEoVsxVwHICK1d/XVuXncHj16MGzYMHbZZRcg/lMfOXIkI0eO5Ntvv+XHH39MfK6PPvqILbfckqZNm7L11lsDsMIKK3DeeefRunVrFi5cWKvYZs+ezYYbbghAhw4dmDZtGsCvvYslJSX8/PPPic83efJkunXrRpMmTejatStTpkzhsMMO45xzzmHAgAHsvvvuAFn3Se3pPb2s5XlPZ3vcb7755tcPfNdee22V+2SJ0tIoi/j440hChw1bNtEsv19Tu/K2NSWqSdokMWxY1EhXLPVQ+Ub9UM+0iCTWv39/brrpJvr37w/ALbfcwt57781dd93FqquuWqtztW3blnfeeYeFCxcyceJEAIYOHcrNN9/MpZdeyqJFi35tu8oqq/DDDz9Q3YqtrVu3Zvr06fz8889MmTKFDTbYAIDVVluttn8mAJtvvjljx47F3Xn99dfp0KEDzz77LOeccw4PP/wwl112Gb/88kvWfVI4Gut7OtvjtmzZko8//pjFixez1VZbMX/+/Kz7JNRmmrp87NlV+UbDUc+0iCTWp08fVl55ZXbcccdf7x933HHcfPPNmBmfffYZ7dq1S3Sus846i4EDB3LllVfSrFkzAPbdd1/69evHhhtuyMKFC1mwYAHNmjVj8ODB9O7dmzXWWIOnn3466/muu+46DjnkEH755ReGDBnCmmuuuVx/6+WXX85RRx3FDz/8wAEHHMBmm23GvHnzOOyww1i4cCH9+/enadOmbLzxxsvsk8LRWN/T2R73uuuu48ADD2TRokWceuqpNG/ePOs+CdUN4CuUhDStXm6pnlX3qTifde7c2cvKynIdhkiDmTx5Mh06dMh1GFIH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\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "history = dnn.fit(X_train, y_train, # 指定训练集\n",
    "                  epochs=30,        # 指定训练的轮次\n",
    "                  batch_size=64,    # 指定数据批量\n",
    "                  validation_split=0.2) #指定验证集,这里为了简化模型，直接用训练集数据\n",
    "show_history(history) # 调用这个函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "45/45 [==============================] - 0s 1ms/step - loss: 0.4146 - acc: 0.8105\n",
      "DNN（归一化之后）的测试准确率为 81.05%\n"
     ]
    }
   ],
   "source": [
    "result = dnn.evaluate(X_test, y_test) #评估测试集上的准确率\n",
    "print('DNN（归一化之后）的测试准确率为',\"{0:.2f}%\".format(result[1]*100))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
